package example.singleton;

/**
 * 懒汉式  静态内部类
 * 这种 写法即解决 安全问题，有解决了性能问题
 */
public class Singleton {
    // 2.将默认构造函数私有化了
    private Singleton() {
    }

    // 3. 同样提供静态方法获取实例
    // final 确保别人不能覆盖
    public static final Singleton getInstance() {
        return LazyHolder.INSTANCE;
    }

    /**
     * 1.声明一个静态内部类
     * private 私有的保证别人不能修改
     * static 保证全局唯一
     */
    private static class LazyHolder {
        // final 是为了防止内部误操作
        private static final Singleton INSTANCE = new Singleton();
    }

}
